<?php 
namespace app\index\model;
use think\Model;
use think\Db;
/**
 * 
 */
class Base extends Model
{

    /**
     * 添加数据
     * @param array $data
     * @return int  id值
     */
    public function insert($name,$data)
    {
 
        $result =  Db::name($name)->insertGetId($data);
        return $result;
       
    }
 
    /**
     * 根据条件修改
     * @param array $where
     * @param array $data
     * @return id  id值
     */
    public function updateByWhere($name,$where,$data)
    {
 
        $result = Db::name($name)->where($where)->update($data);
        if($result===false){
            return false;
        } else{
            return true;
        }
 
    }
 
    /**
     * 根据条件删除
     * @param array $where
     * @return id  id值
     */
    public function deleteByWhere($name,$where)
    {
        return Db::name($name)->where( $where )->delete();
    }
 
    /**
     * 根据条件统计
     * @param array $where
     * @return num  条数
     */
    public function countWhere($name,$where){
 
        return Db::name($name)->where($where)->count();
 
    }
 
    /**
     * 根据属性获取一行记录
     * @param array $where
     * @param string $fileds
     * @return array 返回一维数组，未找到记录则返回空数组
     */
    public function findByAttributes($name,$where = array(),$fileds="*")
    {
 
        return Db::name($name)->field($fileds)->where( $where )->find();
    }
 
    /**
     * 根据条件查询获得数据
     * @param array $where
     * @param string $fileds
     * @return array 返回二维数组，未找到记录则返回空数组
     */
    public function findAllByWhere($name,$where = array(),$fileds="*",$order="")
    {
 
        return Db::name($name)->field($fileds)->where( $where )->order($order)->select();
    }
    /**
     * 查询全部数据有分页查询
     * @param array $where
     * @param string $fileds
     * @param string $page
     * @param string $limit
     * @param string $order
     * @return array 返回二维数组，未找到记录则返回空数组 
     */
    public function loadAllData($name,$fileds="*",$where,$page=1,$limit=10,$order=""){
        $pre = ($page-1)*$limit;
      return Db::name($name)->field($fileds)->where($where)->order($order)->limit("$pre,$limit")->select();
 
   }
 /**
     * 查询全部数据有分页查询
     * @param array $name 二位数组$name['name'][]为表名$name['on'][]为join条件
     * @param array $where
     * @param string $fileds
     * @param string $page
     * @param string $limit
     * @param string $order
     * @return array 返回二维数组，未找到记录则返回空数组 
     */
/*   public function joinAllData($name,$fileds="*",$where,$page=1,$limit=10,$order="",$group=''){
   $join='';
   foreach ($name['name'] as $key => $value) {
       continue;
       $join+=join($value,$name['on'][$key],$name['type'][$key]);

   }
   if(empty($group)&&empty($order)){
        $data = Db::name($name['name'][0])->field($fields)->.$join->limit($pre,$limit)->select();
   }else if(empty($group)&&!empty($order)){
        $data = Db::name($name['name'][0])->field($fields)->.$join->limit($pre,$limit)->order($order)->select();
   }else if(!empty($group)&&empty($order)){
        $data = Db::name($name['name'][0])->field($fields)->.$join->group($group)->limit($pre,$limit)->order($order)->select();
   }else{
        $data = Db::name($name['name'][0])->field($fields)->.$join->group($group)->limit($pre,$limit)->order($order)->select();
   }
   return $data;*/
   
    /**
     * 根据用户的所有信息
     * @param array $where
     * @param string $fileds
     * @param string $key 缓存的健名
     * @param int $time 缓存有效时间
     * @return array 返回一维数组，未找到记录则返回空数组
     */
    public function findOnCache($name,$where = array(),$fileds="*",$key="",$time=0)
    {
        return Db::name($name)->field($fileds)->where($where)->cache($key,$time)->find();
    }

    /**
     * 查询全部数据有分页查询
     * @param array $where
     * @param string $fileds
     * @param string $page
     * @param string $limit
     * @param string $order
     * @return array 返回二维数组，未找到记录则返回空数组 
     */
    public function loadAllDataOnCache($name,$fileds="*",$where,$page=1,$limit=10,$order="",$key="",$time=0){
        $pre = ($page-1)*$limit;
      return Db::name($name)->field($fileds)->where($where)->order($order)->limit("$pre,$limit")->cache($key,$time)->select();
 
   }

 public function is_friend($where_f,$where_t){

    return Db::name('user_friend')->where($where_f)->whereOr($where_t)->count();
 }
}

?>